﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Sinacor.Tools.Web.ConstantesErro
{
    public partial class frmExcecao : BasePage
    {
        private Entidade.MensagemExcecao mensagemExcecaoGuardada; //incluido - esertorio/npaulo - 200809262042
        #region Métodos
        protected override void preencherGrid(string sortExpression)
        {
            Negocio.MensagemExcecao mensagem = new Negocio.MensagemExcecao();
            mensagemExcecaoGuardada = (Entidade.MensagemExcecao) this.preencherEntidade(sortExpression).Clone();
            ViewState["consulta"] = mensagemExcecaoGuardada;
            this.grdTipoMensagem.DataSource = mensagem.consultar(this.preencherEntidade(sortExpression));
            this.grdTipoMensagem.DataBind();
        }

        protected void preencherGrid(string sortExpression, bool usarMensagemExcecaoGuardada)
        {
            if (usarMensagemExcecaoGuardada)
            {
                Negocio.MensagemExcecao mensagemExcecao = new Negocio.MensagemExcecao();
                this.grdTipoMensagem.DataSource = mensagemExcecao.consultar(mensagemExcecaoGuardada);
                this.grdTipoMensagem.DataBind();
            }
            else
            {
                preencherGrid(sortExpression);
            }
        }

        protected override void preencherGrid()
        {
            this.preencherGrid(string.Empty);
        }

       
        protected void preencherDrops()
        {
            this.preencherDropModulos();
        }

        
        private Entidade.MensagemExcecao preencherEntidade(string sortExpression)
        {
            Entidade.MensagemExcecao mensagem = new Entidade.MensagemExcecao();
            if (!string.IsNullOrEmpty(sortExpression))
                Entidade.MensagemExcecao.PropriedadeSort = sortExpression;

            //incluido - esertorio - 200809222050
            if (this.txtCodigo.Text.Trim() != string.Empty && this.hdnOperacao.Value.ToLower() != "i")
            {
                mensagem.Id = Convert.ToInt32(this.txtCodigo.Text.Trim());
            }

            if (this.hdnCodigo.Value.Trim() != string.Empty)
            {
                mensagem.Id = Convert.ToInt32(this.hdnCodigo.Value);
            }

            if (this.ddlModulo.SelectedValue != string.Empty)
            {
                mensagem.Modulo = this.ddlModulo.SelectedValue;
            }

            //exc - esertorio - 200810092004
            //if (this.txtSubmodulo.Text.Trim() != string.Empty)
            //{
            //    mensagem.Submodulo = this.txtSubmodulo.Text.Trim();
            //}

            //inc - esertorio - 200810092004
            if (this.ddlSubModulo.SelectedValue != string.Empty)
            {
                mensagem.Submodulo = this.ddlSubModulo.SelectedValue;
            }

            if (this.txtMensagem.Text.Trim() != string.Empty)
            {
                mensagem.Descricao = this.txtMensagem.Text.Trim();
            }

            if (this.txtResourceKey.Text.Trim() != string.Empty)
            {
                mensagem.Mensagem.ResourceKey = this.txtResourceKey.Text.Trim();
            }

            //incluido - esertorio - 200809222050
            if (this.txtCodigoMensagemVinculada.Text.Trim() != string.Empty)
            {
                mensagem.Mensagem.Id = Convert.ToInt32(this.txtCodigoMensagemVinculada.Text.Trim());
            }

            if (this.hdnCodigoMensagemVinculada.Value.Trim() != string.Empty)
            {
                mensagem.Mensagem.Id = Convert.ToInt32(this.hdnCodigoMensagemVinculada.Value.Trim());
            }

            return mensagem;
        }

        protected void limparCampos()
        {
            this.txtCodigo.Text = string.Empty;
            this.hdnCodigo.Value = string.Empty;
            this.ddlModulo.SelectedValue = string.Empty;
            //this.txtSubmodulo.Text = string.Empty; //exc - esertorio - 200810092004
            this.ddlSubModulo.Text = string.Empty; //inc - esertorio - 200810092004
            this.hdnResourKeyCompleta.Value = string.Empty;
            this.txtResourceKey.Text = string.Empty;
            this.txtPrefixoResourceKey.Text = string.Empty;
            this.txtMensagem.Text = string.Empty;
            this.txtCodigoMensagemVinculada.Text = string.Empty; //incluido - esertorio - 200809291239
            this.hdnCodigoMensagemVinculada.Value = string.Empty;
            this.hdnOperacao.Value = "i";
        }


        private Entidade.MensagemExcecao preencherEntidade()
        {
            return this.preencherEntidade(string.Empty);
        }

        private void preencherDropModulos()
        {
            this.ddlModulo.DataTextField = "Descricao";
            this.ddlModulo.DataValueField = "Id";

            Negocio.Modulo modulo = new Sinacor.Tools.Negocio.Modulo();
            this.ddlModulo.DataSource = modulo.consultar();
            this.ddlModulo.DataBind();
            this.ddlModulo.Items.Insert(0, new ListItem(string.Empty, string.Empty));
        }

        //inc - esertorio - 200810092002
        private void preencherDropSubModulos()
        {
            this.ddlSubModulo.DataTextField = "Descricao";
            this.ddlSubModulo.DataValueField = "Id";

            Negocio.SubModulo subModulo = new Sinacor.Tools.Negocio.SubModulo();
            this.ddlSubModulo.DataSource = subModulo.consultar();
            this.ddlSubModulo.DataBind();
            this.ddlSubModulo.Items.Insert(0, new ListItem(string.Empty, string.Empty));
        }

        //inc - esertorio - 200810092002
        private void preencherDropSubModulos(string IdSubModulo)
        {
            this.ddlSubModulo.DataTextField = "Descricao";
            this.ddlSubModulo.DataValueField = "Id";

            Negocio.SubModulo negSubModulo = new Sinacor.Tools.Negocio.SubModulo();
            Entidade.SubModulo entSubModulo = new Sinacor.Tools.Entidade.SubModulo();
            entSubModulo.Modulo = IdSubModulo;
            this.ddlSubModulo.DataSource = negSubModulo.consultar(entSubModulo);
            this.ddlSubModulo.DataBind();
            this.ddlSubModulo.Items.Insert(0, new ListItem(string.Empty, string.Empty));
        }

        #endregion




        #region Eventos

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                Negocio.MensagemExcecao nMensagem = new Negocio.MensagemExcecao();
                Entidade.MensagemExcecao tipoMensagem = this.preencherEntidade();
                nMensagem.salvar(tipoMensagem);
                //comentado para nao refazer consulta apos alteração trazendo apenas o item alterado - esertorio/npaulo - 200809191950
                this.mensagemExcecaoGuardada = (Entidade.MensagemExcecao)ViewState["consulta"];
                this.preencherGrid(Entidade.MensagemExcecao.PropriedadeSort, true);
                limparCampos();
                this.ddlModulo.SelectedValue = tipoMensagem.Modulo; //inc - esertorio - 200811031220 - QG
                this.ddlSubModulo.SelectedValue = tipoMensagem.Submodulo; //inc - esertorio - 200811031220 - QG
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }
            Session["Mensagem"] = null;
            Session["mensagemId"] = null;

            Session["mensagemIndex"] = null;
            Session["ResourceKeyIndex"] = null;
        }

        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            try
            {
                this.preencherGrid();
                this.hdnOperacao.Value = "i";
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }
        }

        protected void grdTipoMensagem_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                //paginar(sender, e);
                ((GridView)sender).PageIndex = e.NewPageIndex;
                this.mensagemExcecaoGuardada = (Entidade.MensagemExcecao)ViewState["consulta"];
                this.preencherGrid(Entidade.MensagemExcecao.PropriedadeSort, true);               
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }

        }

        //alterado - esertorio - 200809261216
        protected override void Page_Load(object sender, EventArgs e)
        {
            try
            {
                base.Page_Load(sender, e);

                Session["Mensagem"] = null;
                Session["mensagemId"] = null;

                Session["mensagemIndex"] = null;
                Session["ResourceKeyIndex"] = null;

                if (!this.Page.IsPostBack)
                {
                    this.preencherDropModulos();
                    addScripts();
                    preencherGrid();
                    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "inicial", "javascript:resetarForm();", true);
                }
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }
        }

        private void addScripts()
        {
            this.btnSalvar.Attributes.Add("onclick", "if (! validaCamposObrigatorios()) {return false;}");
            this.btnPesquisar.Attributes.Add("onclick", "document.getElementById('hdnOperacao').value = 'c';"); //força consulta - esertorio - 200809291159
        }

        protected void grdTipoMensagem_Sorting(object sender, GridViewSortEventArgs e)
        {
            try
            {
                this.preencherGrid(e.SortExpression);
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }
        }

        protected void Deletar_Click(object sender, ImageClickEventArgs e)
        {
            Negocio.MensagemExcecao nMensagem = new Negocio.MensagemExcecao();
            try
            {
                nMensagem.deletar(this.preencherEntidade());
                limparCampos();
                this.preencherGrid();
            }
            catch (Exception ex)
            {
                this.apresentarMensagem(ex.Message);
            }
        }

        protected new void setDefaultGridStyle(GridViewRowEventArgs e, string defaultStyle)
        {
            e.Row.CssClass = defaultStyle.ToUpper();
            e.Row.Attributes.Add("onmouseover", "this.className = 'HOVER'; setViewerItem(this, true);");
            e.Row.Attributes.Add("onmouseout", "this.className = '" + defaultStyle.ToUpper() + "'; setViewerItem(this, false);");
            e.Row.Attributes.Add("onclick", "javascript:setUpdateItem(this);");
            e.Row.Attributes.Add("ondblclick", "javascript:showDelete(this);");
            setGridCellStyle(e.Row, false);
        }

        protected void grdTipoMensagem_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                this.setDefaultGridStyle(e, string.Empty);
                addToolTip(e);
            }
            setGridCellStyle(e.Row, false);
        }

        protected void addToolTip(GridViewRowEventArgs e)
        {
            /*
                 0-Id
                 1-Modulo
                 2-Submodulo
                 3-ResourceKey
                 4-DescricaoMensagem
                 5-Proposito
                 6-DescricaoStatus
                 7-DescricaoTipo
                 8-botãoDeletar
                 9-CodigoStatus
                10-CodigoTipo
                11-CodigoStatusTraducao
                12-CodigoIdioma
            */
            //3-ResourceKey
            e.Row.Cells[3].Text = e.Row.Cells[3].Text.Length > 50 ? e.Row.Cells[3].Text.Substring(0, 50) : e.Row.Cells[3].Text; //aumentado de 20 para 30 - esertorio - 200809301514
            //4-DescricaoMensagem
            e.Row.Cells[4].Text = e.Row.Cells[4].Text.Length > 50 ? e.Row.Cells[4].Text.Substring(0, 50) : e.Row.Cells[4].Text; //aumentado de 20 para 50 - esertorio - 200809301514
        }

        //incluido - esertorio - 200810092001
        protected void ddlModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            preencherDropSubModulos(this.ddlModulo.SelectedValue);
        }


        #endregion

    }
}
